package pwd.allen.behavior.state;

/**
 * 环境类
 *
 * 拓展：
 *  因为某些情况下状态可以共享，所以环境类可以结合享元模式，增加了一个 HashMap 来保存相关状态，当需要某种状态时可以从中获取
 *
 * @author 门那粒沙
 * @create 2021-05-22 20:53
 **/
public class Context {
    private State state;

    /**
     * 定义环境类的初始状态
     */
    public Context() {
        this.state = new ConcreteStateA();
    }

    /**
     * 设置新状态
     * @param state
     */
    public void setState(State state) {
        this.state = state;
    }

    /**
     * 读取状态
     * @return
     */
    public State getState() {
        return state;
    }

    /**
     * 对请求做处理
     */
    public void Handle() {
        state.Handle(this);
    }
}
